#include "ansi_escapes.h"
#include "printf.h"

// 清屏并将光标移动到左上角
void clear_screen(void) {
    printf(CLEAR_SCREEN);
}

// 清除整行
void clear_line(void) {
    printf(CLEAR_LINE);
}

// 将光标移动到终端左上角 (1,1)
void cursor_home(void) {
    printf(CURSOR_HOME);
}

// 隐藏光标
void cursor_hide(void) {
    printf(CURSOR_HIDE);
}

// 显示光标
void cursor_show(void) {
    printf(CURSOR_SHOW);
}

// 保存当前光标位置
void cursor_save(void) {
    printf(CURSOR_SAVE);
}

// 恢复之前保存的光标位置
void cursor_restore(void) {
    printf(CURSOR_RESTORE);
}

// 设置光标绝对位置 (行号, 列号)，从1开始计数
void set_cursor_position(int row, int col) {
    printf(ESC "%d;%dH", row, col);
}

// 光标上移 n 行
void move_cursor_up(int n) {
    printf(ESC "%dA", n);
}

// 光标下移 n 行
void move_cursor_down(int n) {
    printf(ESC "%dB", n);
}

// 光标右移（前进）n 列
void move_cursor_forward(int n) {
    printf(ESC "%dC", n);
}

// 光标左移（后退）n 列
void move_cursor_back(int n) {
    printf(ESC "%dD", n);
}